The use of operating systems to control the execution of programs on a single computer or processor and the utilization of system resources such as I/O devices and memory by those programs while executing is well known in the art. One such operating system is the UNIX operating system which is described in the article by K. Thompson, "UNIX Implementation" the Bell System Technical Journal, July-August, 1978, Volume 57, Number 6. The UNIX operating system described in this article is designed to control the resources of a single processor. The execution of a new program is described on page 1933 of this article which describes the standard "fork" and "exec" system calls. The procedure is to execute the fork system call which replicates the executing process into a child and parent process. These processes share the same program, but have different data storage. The child then executes the exec system call. The execution of the exec system call results in a new program being executed. Further information on the Unix operating system is given in the book of M. J. Bach entitled The Design Of the Unix Operating System Prentice-Hall, 1986, Englewood Cliffs, N.J. Other known operating systems have similar system calls.
Whereas the exec system call of the UNIX operating system described in the article by Thompson is an extremely effective mechanism for causing the execution of a new program, it is not capable of operating in a multiprocessor environment where the exec system call executes on one processor but causes the new program to commence running on yet a second and unspecified processor. Operating systems for causing the execution of specialized procedures or subroutines on other processors in a multiprocessor environment are known. However, these systems require that the procedure or program already exist on the other processor. One such system is described in U.S. Pat. No. 4,530,051, of J. W. Johnson et al. This patent describes a multiprocessor system whereby one processor can cause the execution of a procedure, or as it is often called a subroutine, on another processor. The problem is that the procedure must already exist on the other processor before execution. A similar system is described in the article by P. Jackson, "UNIX Variant Opens a Path to Managing Multiprocessor Systems", July 28, 1983. In this article, a system is described whereby a program executing on one processor can obtain access to an I/O device, such as a disk drive, by causing a procedure to run on another processor which controls the disk drive. When information is obtained from the disk drive the other processor transfers this to the requesting processor. This article does not describe the general capability of automatically causing a program to be retrieved from a disk and executed on the remote system without the program having been previously designated as existing on that system.
Another method of executing programs in a second processor from a first processor is detailed in the "Remote Procedure Call Protocol Specification" Manual, Part No. 800-1177-01, Sun Microsystems, Inc., 2250 Garcia Avenue, Mountain View, Calif., 94043. This manual gives details on the remote procedure call as implemented by Sun Microsystems, which is an addition to the UNIX operating system. The remote procedure call allows procedures to be executed on a second processor from a first processor.
The problem that exists in the prior art is that there is not a general way to cause the execution of a new program in a multiprocessor system so that the system call executing that program is free of considerations dealing with the loading of the various processors within the multiprocessor system, the physical location of the program whether it be in memory or in a file system, and the setting up of the necessary signaling paths if the execution of the program requires the system call performing this function to span a number of processors within the multiprocessor system.